package com.neusoft.javafeatures9.juc.lock;

import java.util.concurrent.*;
import java.util.concurrent.locks.LockSupport;

/**
 * LockSupport 对线程进行暂停、恢复, LockSupport最大特点无锁。
 * @author dazer
 */
public class LockSupportTest {
    public static String msg = null; // 保存信息

    public static void main(String[] args) throws Exception { // 沐言科技：www.yootk.com
        Thread mainThread = Thread.currentThread(); // 获取当前的主线程
        new Thread(() -> {    // 创建子线程，修改msg的属性内容
            try {
                System.out.printf("【%s】准备进行数据的处理操作%n", Thread.currentThread().getName());
                TimeUnit.SECONDS.sleep(2); // 模拟数据修改的操作延迟
                msg = "沐言科技课程下载：www.yootk.com/resources"; // 修改数据内容
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                LockSupport.unpark(mainThread); // 恢复主线程
            }
        }, "子线程").start();
        LockSupport.park(mainThread); // 挂起主线程
        System.out.println("【主线程】得到最终处理的结果：" + msg);
    }
}
